package com.gqj.bas.mapper;

import com.gqj.bas.domain.BasSort;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 资产分类Mapper接口
 * 
 * @author lxq
 * @date 2023-12-17
 */
public interface BasSortMapper 
{
    /**
     * 查询资产分类
     * 
     * @param sortId 资产分类主键
     * @return 资产分类
     */
    public BasSort selectBasSortBySortId(Long sortId);

    /**
     * 查询资产分类列表
     * 
     * @param basSort 资产分类
     * @return 资产分类集合
     */
    public List<BasSort> selectBasSortList(BasSort basSort);

    /**
     * 校验分类名称是否唯一
     *
     * @param sortName 分类名称
     * @param parentId 父ID
     * @return 结果
     */
    public BasSort checkSortNameUnique(@Param("sortName") String sortName, @Param("parentId") Long parentId);

    /**
     * 根据ID查询所有子分类（正常状态）
     *
     * @param sortId 分类ID
     * @return 子分类数
     */
    public int selectNormalChildrenSortById(Long sortId);

    /**
     * 根据ID查询所有子分类
     *
     * @param sortId 分类ID
     * @return 分类列表
     */
    public List<BasSort> selectChildrenSortById(Long sortId);

    /**
     * 修改子元素关系
     *
     * @param sorts 子元素
     * @return 结果
     */
    public int updateSortChildren(@Param("sorts") List<BasSort> sorts);

    /**
     * 是否存在子节点
     *
     * @param sortId 分类ID
     * @return 结果
     */
    public int hasChildBySortId(Long sortId);

    /**
     * 查询分类是否被引用
     *
     * @param sortId 分类ID
     * @return 结果
     */
    public int checkMaterialExistSort(Long sortId);

    /**
     * 新增资产分类
     * 
     * @param basSort 资产分类
     * @return 结果
     */
    public int insertBasSort(BasSort basSort);

    /**
     * 修改资产分类
     * 
     * @param basSort 资产分类
     * @return 结果
     */
    public int updateBasSort(BasSort basSort);

    /**
     * 删除资产分类
     * 
     * @param sortId 资产分类主键
     * @return 结果
     */
    public int deleteBasSortBySortId(Long sortId);

    /**
     * 批量删除资产分类
     * 
     * @param sortIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBasSortBySortIds(Long[] sortIds);
}
